# @Time : 2024/6/13 19:44
# @Author : ZHUYI
# @File : dataPreprocess_juejin
import pandas as pd


# 数据预处理
def dataPreprocess_juejin():
    """
        对掘金小册数据进行预处理，包括读取数据、数据转换和格式化。
        该函数主要目的是为了优化数据展示，对数据进行标准化处理，方便后续分析和展示。
    """
    # 从CSV文件中读取书本数据，不保留默认的NaN值
    df = pd.read_csv("csv/book.csv", keep_default_na=False)
    # 将书本价格除以100，转换为更易读的格式，并将价格列转换为字符串类型
    df['小册价格'] = df['小册价格'] / 100
    df['小册价格'] = df['小册价格'].astype(str)
    # 将“是否完结”列中的0替换为“更新中”，1替换为“已完结”，并转换为字符串类型
    df['是否完结'] = df['是否完结'].replace(0, '更新中').astype(str)
    df['是否完结'] = df['是否完结'].replace('1', '已完结').astype(str)
    df['销售数量'] = df['销售数量'].astype(str)

    # 设置Pandas显示选项，以更好地展示数据
    pd.set_option('display.width', None)
    pd.set_option('display.max_rows', None)
    # pd.set_option('display.max_colwidth', 100)
    pd.set_option('display.unicode.ambiguous_as_wide', True)
    pd.set_option('display.unicode.east_asian_width', True)

    # 标题居中
    pd.set_option('display.colheader_justify', 'center')

    # 对各列进行格式化，使其在打印时更加对齐和美观
    df['小册标题'] = df['小册标题'].str.pad(width=30, side='right', fillchar=' ')
    df['小册介绍'] = df['小册介绍'].str.center(width=50, fillchar=' ')
    df['小册作者'] = df['小册作者'].str.center(width=20, fillchar=' ')
    df['作者头衔'] = df['作者头衔'].str.center(width=30, fillchar=' ')
    df['小册图片链接'] = df['小册图片链接'].str.center(width=10, fillchar=' ')
    df['小册价格'] = df['小册价格'].str.center(width=10, fillchar=' ')
    df['销售数量'] = df['销售数量'].str.center(width=10, fillchar=' ')
    df['是否完结'] = df['是否完结'].str.center(width=10, fillchar=' ')

    # 将处理后的数据写入新的CSV文件
    with open("csv/book_preprocess.csv", "w", encoding="utf-8") as fp:
        fp.write(str(df))
    return df

dataPreprocess_juejin()